#pragma once

template <class T>
class Iterador abstract
{
public:
	virtual ~Iterador();

	virtual void Reiniciar() abstract;
	virtual bool HayElemento() const abstract;
	virtual const T& ElementoActual() const abstract;
	virtual void Avanzar() abstract;

	bool operator==(const Iterador<T>& it) { return this == &it; }

	Iterador<T>& operator++();
	Iterador<T>& operator++(int);
	const T& operator*() const;
};

#include "Iterador.cpp"